package com.cxq.thread;

import java.util.concurrent.*;

/**
 * Created by cxq on 2020/7/25.
 */
public class Test {
    public static void main(String[] args) {


//        //1 继承Thread方法创建线程
//        MyThread myThread = new MyThread();
//        myThread.start();
//        //简洁方式创建线程 lamda表达式
//        new Thread(()-> System.out.println(Thread.currentThread())).start();



//        //2 实现Runnable接口创建线程
//        MyRunnable myRunnable = new MyRunnable();
//        myRunnable.run();
//        //简洁方式创建线程 lamda表达式
//        new Runnable() {
//            @Override
//            public void run() {
//                System.out.println(Thread.currentThread());
//            }
//        }.run();

//        //3 实现Callable接口创建线程
//        //3.1创建FutureTask实例，创建MyCallable实例
//        FutureTask<String> task = new FutureTask<String>(new MyCallable());
//        //3.2创建Thread实例，创建Mycallable实例
//        Thread thread = new Thread(task,"myCallable");
//        thread.start();
//
//        //3.3 获取返回值
//        String result = null;
//        try {
//            result = task.get();
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        } catch (ExecutionException e) {
//            e.printStackTrace();
//        }
//        System.out.println("执行结果是："+result);

//        4 使用线程池来创建线程,线程池只能放入实现Runable或Callable接口的线程
//        4.1使用工具类Executors获取线程池对象
        ExecutorService executorService = Executors.newFixedThreadPool(100);
        //4.2通过线程池对象获取MyRunnable对象
        executorService.execute(new MyRunnable());
        executorService.shutdown();



    }
}
